home *** CD-ROM | disk | FTP | other *** search
-
- regc( 0, "TFACTOR" )
- regc4f( 3, %dirtcolor_r, %dirtcolor_g, %dirtcolor_b, %sunvisibility )
- regc4f( 4, %dirtsnow, %dirtgravel, %dirtmud, 0.0 )
- regc4f( 5, %daycolor_r, %daycolor_g, %daycolor_b, %daycolor_a )
- regc4f( 7, %ambient_r, %ambient_g, %ambient_b, %ambient_a )
-
- hlsl("
-
- #include <../common_hlsl.h>
- #include <cardef.h>
-
- sampler2D sColor: register(s0);
- sampler2D sDirt: register(s1);
- sampler2D sNormalmap: register(s2);
- samplerCUBE sCubemap: register(s3);
-
- const HALF4 DirtLevel : register(c0); // DirtLevel.a
- const HALF3 DirtColor : register(c3);
- const HALF3 DirtType : register(c4);
- const HALF3 DayColor : register(c5);
- const HALF4 Ambient : register(c7);
-
- static const HALF3 Tiling = {SNOWTILING, GRAVELTILING, MUDTILING};
- static const HALF3 FlatNormal = {0.0f, 0.0f, 1.0f};
-
- struct PS_INPUT
- {
- HALF2 uvColor : TEXCOORD0;
- float3 E_ts : TEXCOORD1;
- float3x3 Trans: TEXCOORD2;
- };
-
- HALF4 main( PS_INPUT i ): COLOR {
-
- HALF DirtMask = dot(tex2D( sDirt, i.uvColor ), DirtType)*DirtLevel.a;
-
- HALF3 Normalmap = tex2D( sNormalmap, i.uvColor)*2 - 1;
- HALF3 uvCubemap = mul(reflect(i.E_ts, Normalmap), i.Trans);
- HALF3 Cubemap = texCUBE( sCubemap, uvCubemap);
- HALF BrokenMask = tex2D( sNormalmap, i.uvColor).a;
-
- HALF3 Broken = (Cubemap+Ambient.a*0.5)*BrokenMask;
-
- HALF Alpha = tex2D(sColor, i.uvColor).a;
-
- HALF3 Color = saturate(((1-Alpha)*DirtColor*0.3)+Broken);
-
- return HALF4(Color*DayColor, BrokenMask+Alpha+DirtMask);
- }
- ")
-
-